For open-loop fading channel, diversity is often considered the only choice to mitigate the fading effects and improve the system reliability. While forward error correction (FEC) coding provides valuable time diversity, for a slow fading environment, space diversity/polarization proves to be more effective. The objective of the so-called space-time codes is to maximize the diversity.
There are basically two kinds of space-time codes: trellis codes and block codes. While trellis codes provide additional coding gain, they have drawbacks, namely: the decoder is more complex (since these codes work on the QAM symbols), and it is difficult to concatenate trellis space-time codes with powerful soft-decoding FEC codes, such as Turbo codes and convolutional codes. Space-time block codes (STBCs) do not provide coding gain, but they are simple to decode (especially for complex orthogonal design codes), and they can be combined with other soft-decoding FEC codes. It is for these reasons that STBCs are more practical and are widely adopted by numerous standards.
The best known STBC was invented by Alamouti and Tarokh (U.S. Pat. No. 6,185,258) where the code matrix is presented as in Table 1 below.
TABLE 1Time tTime (t + T)Antenna 1S1S2Antenna 2−S2*S1*
The Alamouti code has several properties, which facilitate space diversity implementations. The signals are orthogonal; hence full diversity is achieved at the receiver side. The transmit power is balanced between the two antennas and the two time slots; hence a low cost power amplifier can be used (reducing the modem cost). Further, the code rate is 1; hence no throughput is sacrificed. Further, its maximum likelihood decoder is very simple, which makes the cost of an optimal decoder negligible.
Unfortunately, it was proven later that there are no such orthogonal codes existing for a system with more than two transmitter antennas. Therefore, the focus was shifted to the following two approaches: designing orthogonal STBC codes with a code rate smaller than 1; and designing quasi-orthogonal STBC codes to maintain the property of code rate 1. While the first approach sacrifices the system throughput, the second approach sacrifices signal quality due to a loss of orthogonality. There are several variations of codes that follow the two approaches described above, with focus on other areas such as power balancing and code rate manipulation. However, the Alamouti is still preferred for many implementations.
Table 2 is an example of an STBC for 4 antenna applications (Code-A). Code-A is an orthogonal code having code rate 3/4. Maintaining orthogonality as in Code-A helps maintain diversity order and signal quality.
TABLE 2Time tTime (t + T)Time (t + 2T)Time (t + 3T)Antenna 1S1−S2*−S3*XAntenna 2S2S1*xS3*Antenna 3S3xS1*−S2*Antenna 4x−S3S2S1With Code-A, each received signal has a diversity order of 4. However, one weakness of Code-A is its code rate loss, which must be compensated in FEC codes. In other words, due to the rate loss in STBC, the code rate in FEC must be higher. Higher code rates can cause problems for the powerful trellis codes, whose coding gain loss becomes significant when punctuation becomes excessive. Further, Code-A does not achieve full power balance across the transmit antennas.
Table 3 contains a second example of STBC for 4 antenna applications (Code-B). Code-B is a non-orthogonal code having code rate 1. Maintaining the throughput as in Code-B helps prevent loss of coding gain at the FEC stage.
TABLE 3Time tTime (t + T)Time (t + 2T)Time (t + 3T)Antenna 1S1−S2*S3−S4*Antenna 2S2S1*S4S3*Antenna 3S3−S4*S1−S2*Antenna 4S4S3S2S1*Since Code-B is not an orthogonal code, its determinant suffers from mutual interference. Defining the equivalent channel matrix Q as
            Q      =              [                                                            h                1                                                                    h                2                                                                    h                3                                                                    h                4                                                                                        h                2                *                                                                    -                                  h                  1                  *                                                                                    h                4                *                                                                    -                                  h                  3                  *                                                                                                        h                3                                                                    h                4                                                                    h                1                                                                    h                2                                                                                        h                4                *                                                                    -                                  h                  3                  *                                                                                    h                2                *                                                                    -                                  h                  1                  *                                                                    ]              ,    then                      r        ⇀            =              Q        ⁢                  s          _                      ,    where                      r        ⇀            =                        [                                                                      r                  1                                                                              r                  2                  *                                                                              r                  3                                                                              r                  4                  *                                                              ]                T              ,    and              s      ⇀        =                            [                                                                      s                  1                                                                              s                  2                                                                              s                  3                                                                              s                  4                                                              ]                T            .      The determinant of Q is given by|Q|=A2−B2,whereA=|h1|2+|h2|2+|h3|2+|h4|2, andB=2(Re(h1h3*)+Re(h2h4)).The element of B2 represents the loss due to the loss of orthogonality. Since B2≦0, it always contributes negatively to the code performance.
An example application of STBC is the Long Term Evolution (LTE) protocol, which defines a physical hybrid automatic repeat request (ARQ) indicator channel (PHICH) to transmit ACK/NACK bits. In general, the LTE protocol requires ACK/NACK bits to be spread and multiplexed together using code-division multiplexing (CDM), and to be repeated three times. The spreading factor (SF) selection for PHICH is non-trivial and has various consequences related to the spreading gain, ease of implementation, power balancing and other issues.